#include <stdio.h>
#include <unistd.h>
#include <string.h>

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

//input redirection --- version 2
int main()
{
  int fd=open("log.txt",O_RDONLY);
  //dup2(fd,0);

  char buffer[1024];
  while(1)
  {
    char* s=fgets(buffer,sizeof(buffer),stdin);
    if(s==NULL)
    {
     break;
    }
    printf("file content:%s",buffer);
  }

  close(fd);
  return 0;
}


////append redirection --- version 2
//int main()
//{
//  umask(0);
//  int fd=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
//  dup2(fd,1);
//  printf("Hello Linux!\n");
//  close(fd);
//  return 0;
//}

////output redirection --- version2
//int main()
//{
//  int fd=open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
//  dup2(fd,1);
//  printf("Hello Linux!\n");
//  return 0;
//}

////append redirectiion
//int main()
//{
//  close(1);
//  open("data.txt",O_WRONLY|O_CREAT|O_APPEND,0666);
//  printf("hello linux! ");
//  fprintf(stdout,"hello windows!");
//  return 0;
//}

//output redirecton
//int main()
//{
//  close(1);
//  open("data.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
//  printf("Hello printf!\n");
//  fprintf(stdout,"hello fprintf!\n");
//  return 0;
//}

// input redirection
// log.txt: Hello Linux!
//int main()
//{
//  close(0);
//  open("log.txt",O_RDONLY);
//  char buffer[1024];
//  scanf("%s",buffer);
//  printf("%s\n",buffer);
//  return 0;
//}


//int main()
//{ 
//  //close(0);
//  //close(2);
//  close(1);
//  int fd=open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0666);
//  printf("fd:%d\n",fd);
//  return 0;
//}

//int main()
//{
//  int fd=open("log.txt",O_RDONLY);
//  if(fd==-1)
//  {
//    perror("open failed");
//    return 1;
//  }
//  // read file
//  char buffer[1024];
//  ssize_t s=read(fd,buffer,sizeof(buffer));
//  if(s>0)
//  {
//    buffer[s]=0;
//    printf("%s\n",buffer);
//  }
//  close(fd);
//  return 0;
//}


//int main()
//{
//  printf("stdin:%d\n",stdin->_fileno);
//  printf("stdout:%d\n",stdout->_fileno);
//  printf("stderr:%d\n",stderr->_fileno);
//
//  return 0;
//}
//int main()
//{
//  int fd1=open("log1.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
//  int fd2=open("log2.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
//  int fd3=open("log3.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
//  int fd4=open("log4.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
//  int fd5=open("log5.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
//  
//
//  printf("fd1:%d\n",fd1);
//  printf("fd2:%d\n",fd2);
//  printf("fd3:%d\n",fd3);
//  printf("fd4:%d\n",fd4);
//  printf("fd5:%d\n",fd5);
//  return 0;
//}
//

//int main()
//{
//  //int fd=open("log.txt",O_WRONLY|O_CREAT|O_TRUNC,0664);
//  int fd=open("log.txt",O_WRONLY|O_CREAT|O_APPEND,0664);
//  if(fd==-1)
//  {
//    perror("open failed");
//    return 1;
//  }
//  //read and write
//  //...
//  //const char* str="Hello Linux!\n";
//  const char* str="aaaaa\n";
//  write(fd,str,strlen(str));
//
//  close(fd);
//  return 0;
//}

//#include <stdio.h>
//#include <string.h>
//#include <stdlib.h>
//#include <unistd.h>
//#include <sys/types.h>
//
//int main()
//{
//
//  //chdir("/home/shuju/Linux");
//  FILE* pf=fopen("log.txt","r");
//  if(pf==NULL)
//  {
//    perror("fopen failed");
//    exit(1);
//  }
//
//  char buffer[64];
//  while(1)
//  {
//     char* r=fgets(buffer,sizeof(buffer),pf);
//     if(r==NULL)
//     {
//       break;
//     }
//     printf("%s",buffer);
//  }
//  //operator write
//  //const char* str="Hello Linux\n";
//  //fputs(str,pf);
//  //const char* msg="Hello Linux!\n";
//  //int cnt=5;
//  //while(cnt)
//  //{
//  //  int n=fwrite(msg,strlen(msg),1,pf);
//  //  printf("write %d block  getpid:%d\n",n,getpid());
//  //  cnt--;
//  //  //sleep(20);
//  //}
//  fclose(pf);
//  pf=NULL;
//  return 0;
//}
